package com.ms.module.wechat.clear.utils;

import com.chad.library.adapter.base.entity.node.BaseNode;
import com.ms.module.wechat.clear.fragment.adapter.node.UpChildNode;
import com.ms.module.wechat.clear.fragment.adapter.node.UpGroupNode;
import com.ms.module.wechat.clear.fragment.adapter.node.FileChildNode;
import com.ms.module.wechat.clear.fragment.adapter.node.FileHeaderNode;

import java.util.List;

public class ListDataUtils {

    /**
     * 检查所有子节点状态
     *
     * @param datas
     * @return
     */
    public static boolean checkFileChildNode(List<BaseNode> datas) {
        boolean check = true;
        for (int i = 0; i < datas.size(); i++) {
            BaseNode baseNode = datas.get(i);
            if (baseNode instanceof FileChildNode) {
                FileChildNode fileChildNode = (FileChildNode) baseNode;
                if (!fileChildNode.isCheck()) {
                    check = false;
                }
            }
        }
        return check;
    }


    /**
     * 检查全选所有节点状态 | 有假则假
     *
     * @param datas
     * @return
     */
    public static boolean checkAllNode(List<BaseNode> datas) {

        if (datas == null) {
            return false;
        }

        boolean check = true;
        for (int i = 0; i < datas.size(); i++) {
            BaseNode baseNode = datas.get(i);
            if (baseNode instanceof FileHeaderNode) {
                FileHeaderNode headerNode = (FileHeaderNode) baseNode;
                List<BaseNode> childNode = headerNode.getChildNode();
                for (int j = 0; j < childNode.size(); j++) {
                    BaseNode baseNodeT = childNode.get(j);
                    if (baseNodeT instanceof FileChildNode) {
                        FileChildNode childNode1 = (FileChildNode) baseNodeT;
                        if (!childNode1.isCheck()) {
                            check = false;
                        }
                    }
                }
            }
        }
        return check;
    }


    /**
     * 检查清理页面的 上部 所有节点的状态
     *
     * @param datas
     * @return
     */
    public static boolean checkClearUpAllNode(List<BaseNode> datas) {
        if (datas == null || datas.size() == 0) {
            return false;
        }

        boolean check = false;
        for (int i = 0; i < datas.size(); i++) {
            BaseNode baseNode = datas.get(i);
            if (baseNode instanceof UpGroupNode) {
                UpGroupNode headerNode = (UpGroupNode) baseNode;
                List<BaseNode> childNode = headerNode.getChildNode();
                for (int j = 0; j < childNode.size(); j++) {
                    BaseNode baseNodeT = childNode.get(j);
                    if (baseNodeT instanceof UpChildNode) {
                        UpChildNode childNode1 = (UpChildNode) baseNodeT;
                        if (childNode1.isCheck()) {
                            check = true;
                            return check;
                        }
                    }
                }
//                if (headerNode.isCheck()) {
//                    check = true;
//                    return check;
//                } else {
//                    List<BaseNode> childNode = headerNode.getChildNode();
//                    for (int j = 0; j < childNode.size(); j++) {
//                        BaseNode baseNodeT = childNode.get(j);
//                        if (baseNodeT instanceof UpChildNode) {
//                            UpChildNode childNode1 = (UpChildNode) baseNodeT;
//                            if (childNode1.isCheck()) {
//                                check = true;
//                                return check;
//                            }
//                        }
//                    }
//                }
            }
        }
        return check;
    }


    public static void setCheck(List<BaseNode> datas, boolean check) {
        for (int i = 0; i < datas.size(); i++) {
            BaseNode baseNode = datas.get(i);
            if (baseNode instanceof FileChildNode) {
                FileChildNode childNode = (FileChildNode) baseNode;
                childNode.setCheck(check);
            }
        }
    }

    public static boolean checkAllNodeClear(List<BaseNode> datas) {
        if (datas == null) {
            return false;
        }

        boolean check = false;
        for (int i = 0; i < datas.size(); i++) {
            BaseNode baseNode = datas.get(i);
            if (baseNode instanceof FileHeaderNode) {
                FileHeaderNode headerNode = (FileHeaderNode) baseNode;
                List<BaseNode> childNode = headerNode.getChildNode();
                for (int j = 0; j < childNode.size(); j++) {
                    BaseNode baseNodeT = childNode.get(j);
                    if (baseNodeT instanceof FileChildNode) {
                        FileChildNode childNode1 = (FileChildNode) baseNodeT;
                        if (childNode1.isCheck()) {
                            check = true;
                        }
                    }
                }
            }
        }
        return check;
    }
}
